Bounds & Frame
Bounds와 Frame의 차이는?
Bounds와 Frame는 기본적으로 좌표 시스템을 나타내는 UIView의 프로퍼티이며 CGRect를 상속받고 있다.
Bounds?
애플의 개발자 문서를 참고하면

자체 좌표계에서 뷰의 위치와 크기를 설명하는 경계 사각형.
이라 정의되어있다.
Bounds의 핵심은 자체 좌표계라는 것에 있다.
Bounds는 왼쪽 상단을 기준으로 (0, 0)을 기본값으로 가진다. 아래 예시 이미지를 보면 금방 이해할 수 있다.

이미지의 녹색 사각형이 디바이스 화면, 빨간점이 기준이 되는 (0, 0)이다.
Bounds는 해당 아이템을 (x, y)을 기준으로 보여주겠다 라는 뜻이다.
x, y를 변경하면 어떻게 될까?
imageView.bounds.origin.x = 280
imageView.bounds.origin.y = 70

이미지 자체 좌표계에서 기준이 되는 빨간점이 이동한 것을 확인할 수 있다!
이런 특징 때문에 ScrollView, CollectionView 에서 contentSize를 설정해줬을 때 스크롤 효과를 낼 수 있는 것이다.
Frame?
그렇다면 Frame은 뭘까?

상위 뷰의 좌표계에서 뷰의 위치와 크기를 설명하는 프레임 사각형.
마찬가지로 애플의 개발자 문서를 참고하면 위와 같이 정의되어 있다.
Frame의 핵심은 상위 뷰의 좌표계라는 것에 있다.
Frame도 마찬가지로 왼쪽 상단을 기준으로 (0, 0)을 기본값으로 가지는데, 이때 (0, 0)의 기준이 되는 것이 바로 상위 뷰의 좌표계라는 것이다.
아래 예시 이미지를 보면 금방 이해할 수 있다.

이미지의 노란색 사각형이 디바이스 화면, 빨간점이 기준이 되는 (0, 0), 큰 회색 사각형이 상위 뷰이다. Frame은 자신의 상위 뷰의 좌표를 기준으로 (x, y)에 보여주겠다 라는 뜻이다.
x, y를 변경하면 어떻게 될까?
imageView.frame.origin.x = 40
imageView.frame.origin.y = 60

상위 뷰인 superview를 기준으로 빨간점이 이동한 것을 확인할 수 있다!
Frame은 상위 뷰를 기준으로 하므로 항상 superview가 필요하다.
참고자료